package com.jcark.ui.dialog;

import android.content.Context;
import android.view.View;

import androidx.annotation.NonNull;
import androidx.annotation.StyleRes;

import com.jcark.ui.R;
import com.jcark.ui.dialog.style.DefaultStyle;
import com.jcark.ui.dialog.style.IMutableDialogStyle;

/**
 * Description: 对话框工具类<br>
 *
 * @author King.Zi<br>
 * @date 2022/6/14<br>
 * Email: 78688689@qq.com
 */
public class DialogUtils {
    private DialogUtils() {
    }

    /**
     * 创建确认对话框-使用默认样式
     *
     * @param context             上下文
     * @param title               标题
     * @param content             内容
     * @param leftButtonListener  左按钮事件监听（null时为默认功能，即关闭当前对话框）
     * @param rightButtonListener 右按钮事件监听
     * @return 确认对话框
     */
    public static MutableStyleDialog createDialog(@NonNull Context context,
                                                  String title,
                                                  CharSequence content,
                                                  View.OnClickListener leftButtonListener,
                                                  View.OnClickListener rightButtonListener) {
        return createDialog(context, title, content,
                context.getString(R.string.mutable_dialog_default_left_text), leftButtonListener,
                context.getString(R.string.mutable_dialog_default_right_text), rightButtonListener);
    }

    /**
     * 创建确认对话框-使用默认样式
     *
     * @param context             上下文
     * @param title               标题
     * @param content             内容
     * @param leftButtonText      左按钮文本
     * @param leftButtonListener  左按钮事件监听（null时为默认功能，即关闭当前对话框）
     * @param rightButtonText     右按钮文本
     * @param rightButtonListener 右按钮事件监听
     * @return
     */
    public static MutableStyleDialog createDialog(@NonNull Context context,
                                                  String title,
                                                  CharSequence content,
                                                  String leftButtonText,
                                                  View.OnClickListener leftButtonListener,
                                                  String rightButtonText,
                                                  View.OnClickListener rightButtonListener) {
        return createDialog(context, new DefaultStyle(), title, content, leftButtonText,
                leftButtonListener, rightButtonText, rightButtonListener);
    }

    /**
     * 创建确认对话框(默认主题风格，指定样式)
     *
     * @param context             上下文
     * @param dialogStyle         样式 {@link IMutableDialogStyle}
     * @param title               标题
     * @param content             内容
     * @param leftButtonText      左按钮文本
     * @param leftButtonListener  左按钮事件监听（null时为默认功能，即关闭当前对话框）
     * @param rightButtonText     右按钮文本
     * @param rightButtonListener 右按钮事件监听
     * @return
     */
    public static MutableStyleDialog createDialog(@NonNull Context context,
                                                  IMutableDialogStyle dialogStyle,
                                                  String title,
                                                  CharSequence content,
                                                  String leftButtonText,
                                                  View.OnClickListener leftButtonListener,
                                                  String rightButtonText,
                                                  View.OnClickListener rightButtonListener) {

        return createDialog(context, R.style.MutableDialogStyle, dialogStyle, title, content, leftButtonText,
                leftButtonListener, rightButtonText, rightButtonListener);
    }

    /**
     * 创建确认对话框(指定主题风格且指定样式)
     *
     * @param context
     * @param themeResId
     * @param dialogStyle
     * @param title
     * @param content
     * @param leftButtonText
     * @param leftButtonListener
     * @param rightButtonText
     * @param rightButtonListener
     * @return
     */
    public static MutableStyleDialog createDialog(@NonNull Context context,
                                                  @StyleRes int themeResId,
                                                  IMutableDialogStyle dialogStyle,
                                                  String title,
                                                  CharSequence content,
                                                  String leftButtonText,
                                                  View.OnClickListener leftButtonListener,
                                                  String rightButtonText,
                                                  View.OnClickListener rightButtonListener) {
        MutableStyleDialog mutableStyleDialog = new MutableStyleDialog(context, themeResId, dialogStyle);
        mutableStyleDialog.setCancelable(false);
        mutableStyleDialog.setTitle(title);
        mutableStyleDialog.setContentText(content);
        mutableStyleDialog.setLeftButton(leftButtonText, leftButtonListener);
        mutableStyleDialog.setRightButton(rightButtonText, rightButtonListener);
        return mutableStyleDialog;
    }
}
